﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Lavanderia.Entities;
using System.Data.Objects;

namespace Lavanderia.Repository
{
    public class DetalleVentaRepository:MasterRepository,IDetalleVentaRepository
    {
        public List<DETALLE_VENTA> GetAllFromDetalleVentaByVentaId(int id)
        {
            var query = from c in context.DETALLE_VENTA.Include("PRODUCTO").Include("PRODUCTO")
                        where c.IdVenta.Equals(id)
                        select c;
            return query.ToList();
        }

        public List<DETALLE_VENTA> GetAllFromDetalleVentaByFechaVenta(DateTime fecha)
        {
            var query = from c in context.DETALLE_VENTA.Include("PRODUCTO").Include("PRODUCTO")
                        select c;
            if (fecha != null)
            {
                query = from c in context.DETALLE_VENTA.Include("PRODUCTO").Include("PRODUCTO")
                        where EntityFunctions.TruncateTime(c.Fecha) == fecha
                        select c;
            }
            return query.ToList();
        }

        public List<DETALLE_VENTA> GetAllFromDetalleVentaProductosOfMonth(int fecha)
        {
            var query = from c in context.DETALLE_VENTA.Include("PRODUCTO").Include("PRODUCTO")
                        where c.Fecha.Month == fecha
                        select c;
            return query.ToList();
        }

        public List<DETALLE_VENTA> GetAllFromDetalleVentaProductosOfYear(int fecha)
        {
            var query = from c in context.DETALLE_VENTA.Include("PRODUCTO").Include("PRODUCTO")
                        where c.Fecha.Year == fecha
                        select c;
            return query.ToList();
        }


        public void UpdateDetalleVenta(DETALLE_VENTA detTraslado)
        {
            //obtenemos datos de la DB
            var detVentaDB = context.DETALLE_VENTA.Find(detTraslado.Id);

            //igualamos los cambios echos y actualizamos los de la DB
            detVentaDB.Anulado = detTraslado.Anulado;
            detVentaDB.Cantidad = detTraslado.Cantidad;
            detVentaDB.Fecha = detTraslado.Fecha;
            detVentaDB.IdProducto = detTraslado.IdProducto;
            detVentaDB.IdVenta = detTraslado.IdVenta;
            detVentaDB.Importe = detTraslado.Importe;
            detVentaDB.Precio = detTraslado.Precio;

            context.Entry(detVentaDB).State = System.Data.EntityState.Modified;
            context.SaveChanges();
        }
    }
}
